package com.aiwiown.snackmq.api;

import com.aiwiown.snackmq.common.message.MessageStatus;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 消息发送结果类
 * 用于封装消息发送后的状态和相关信息
 */
@Data
@NoArgsConstructor
public class SendResult {
    /**
     * 消息状态
     * 表示消息当前的状态，如发送成功、发送失败等
     */
    private MessageStatus status;

    /**
     * 消息ID
     * 唯一标识消息的ID，用于追踪和管理消息
     */
    private long messageId;

    /**
     * 消息偏移量
     * 消息在队列中的偏移量，用于定位消息的位置
     */
    private long offset;

    /**
     * 错误信息
     * 当消息发送失败时，提供错误信息以供调试和日志记录
     */
    private String errorMessage;

    /**
     * 【新增】一个方便的构造函数，以匹配 DefaultProducer 中的调用。
     * @param messageId 消息ID
     * @param status 消息状态
     */
    public SendResult(long messageId, MessageStatus status) {
        this.messageId = messageId;
        this.status = status;
    }
}